Présentation






Bienvenue sur le site du groupe 4 de la spécialisation Informatique et Siences du Numérique (ISN). L'intérêt de ce site est de vous montrer ce que nous produisons tout au long de l'année en ISN, nous etudions au lycée Alfred Kastler à stenay dans le département de la Meuse en Lorraine.

Notre groupe est composé de 3 membres, VAUCHER Théo, SUDOL Loïc et VERNET Loïck. Chacun des membres à son site dédié, si vous voulez plus d'information à leurs sujets, des liens sont mis à dispositions ci-dessous.


Théo
Loic
Loick








Nos travaux






Nous montrons ici tout les travaux que nous avons produits tout au long de l'année en ISN, cela comprend des diapo, des recherches et divers document qui sont tous téléchargeable.











Notre grand projet




Ce projet est surement l'un des exercices les plus durs que nous ayons à réaliser, nous allons devoir créer un jeu en base Python, le Python est un langage facilement accessible pour les débutants. Nous avons décidé d'utiliser l'interface graphique Pygame au lieu de Tkinter car nous avions déjà utilisé Tkinter auparavant et on a pensé que sa pourrait être interessant de changer module pour en apprendre d'avantage sur le code. Au départ nous voullions partir sur un RPG/action-aventure donc faire un mélange de pokémon et de zelda dans un style 2D, on s'est vite rendu compte de la difficulté, on est donc partie sur un labyrinthe revisité MBlock.


But du jeu :

Notre jeu est un labyrinthe, le but est d'atteindre la sortie, jusque la rien de complexe. Mais le labyrinthe n'est pas comme les autres, il s'agira d'un jeu au tour par tour ou le déplacement se fera de case en case et ce une case par tour. Il y aura 4 Mégabloc(argent, or, diamant et "normal") qui seront fixes dont la répartition se fera aux quatre milieu des extrémités du labyrinthe. Tout les tours, de manière aléatoire, l'un des Mégablocs posera un obstacle sur une cellule adjacente à la position de votre personnage, le placement de cet obstacle se fera à l'opposer de la position de votre personnage en fonction du Mégablocs qui va poser cet obstacle. Par exemple, si le Mégabloc or qui se situe en haut du labyrinthe pose son obstacle, il le posera sur la partie basse de votre personnage. Pour pas que ce jeu soit infaisable, vous pourrez connaitre quel Mégabloc posera son obstacle en fonction des tours mais seulement les 5tours suivants, vous posséderez un sort qui permet de se déplacer de deux cases mais avec un temps de relance de 10tours ainsi qu'un sort qui permet de pousser les blocs adjacents au personnage avec un temps de relance de 10tours, vous posséderez également un sort qui permet de retirer un tour de relance sur les sort précédant lançable une infinité de fois dans le tour, ce sort vous fait perdre 1 point de vie... Vous avez 50 points de vie et vous perdrez 1 point de vie par tour de jeu ! arriver à 0 point de vie le jeu est terminé.


Avancement du projet :

Nous allons vous présenter l'avancé du projet au cours de l'année, celle-ci sera divisé par période et comprendra différentes captures de notre code ainsi que celui du jeu.

Du lancement du projet jusqu'au 30 mars :

On importe Pygame, on crée une fenetre de résolution 600x600.




En vert :on intègre les fonctions global pour plus tard, ce n'est vraiment pas important pour le moment.
En orange : fonction "While continuer" permet d'avoir une boucle infinie, quand on appuie sur une des touches directionnels et si i>0 alors on autorise le deplacement. En ce deplaçant, on décale son personnage de 30 pixel et le sprite du personnage change en fonction de sa position(bas, droite, gauche, haut).
En violet et bleu : Cette partie permet d'inclure le sort du double déplacement ainsi que le système de tour.



On a intégré différents sprites du labyrinthe comme les murs, le sprite du personnage à l'apparition de la fenetre de jeu etc... La fonction go.get_rect() va nous permettre de donner une valeur aux sprites, par exemple, cela sera utile pour faire en sorte que les murs ne soient pas traversable par le personnage. Ils restent beaucoup de sprite à intégrer et ce n'est pas notre priorité pour le moment.



Il s'agit ici d'une liste prédéfini de la position des murs dans le labyrinthe. La méthode que nous avons utilisé n'est vraiment pas optimale car nous avons placé un à un les murs. Nous n'avons pas réussi à creer la fonction optimale, nous reviendront plus tard sur ce passage afin d'avoir un codage plus propre. pour l'instant nous allons intégrer cette liste via un module afin de ne pas gener la lecture et la création du code principale.



Voici l'image de notre jeu actuellement, il nous faut encore créer le système de Mégabloc, créer une autre fenêtre permettant l'affichage de certaines options, faire en sorte que les murs ne soient pas traversable, introduire le sort de reduction de relance. créer un système de point de vie et faire des réglages bonus et esthétique.



Du 30 mars jusqu'a la fin du projet

La première partie montrera toutes les constantes intégrées dans le jeu donc cela comprend la résolution de l'écran de jeu, les sprites ainsi que les sons, l'intégration de la bibliothèque Pygame et des modules.

On import la bibliothèque Pygame, ainsi que des modules permettant de creer de l'aléatoire. Puis on crée une résolution de 600x750 pour etre adapté à une grande majorité d'écran.



Insertion des sons.



Insertion des images dans des variables.











La seconde partie montrera toutes les fonctions du jeu.

Constantereset permet d'avoir une sauvegarde de tout changement de niveau ainsi que l'initialisation du jeu.



Resettuto permet de lancer et de relancer le niveau tuto.



Resetentrainement permet de et de relancer le niveau entrainement.



Resetniveau permet de et de relancer le niveau principale.



Tuto permet de changer les indications du tuto afin de faciliter l'experience du joueur.



Celluleverte va détécter à chaque déplacement si le personnage se situe sur la case "end" et va donc créer un changement de niveau ou afficher le fond victoire.



Mortauto va vérifier si le joueur est entouré des blocs, si le personnage est entouré de 4 blocs le joueurs à perdu.



Buff créer une liste aléatoire.



Bufflist permet d'afficher la liste aléatoire des 5 premiers rangs de la liste buff_statue sous forme d'image.



Bloc va faire apparaitre les blocs selon la position du personnage ainsi que celui du Mégabloc concerné.



Reactumouv permet de réactualiser les points de mouvement disponible.



Reactudouble permet de réactualiser les temps de relance du sort double déplacement.



Reactulibe permet de réactualiser les temps de relance du sort liberation.



Deplacementall permet de déplacer le personnage.



Doubledeplacement est un sort qui permet d'avoir un deuxième déplacement réutilisable tout les 10tours.



Liberation est un sort qui permet d'écarter les blocs adjacents au personnage réutilisable tout les 10tours.



reducrelance est un sort qui permet de réduire le temps de relance des sorts libération et double déplacement en échange de 1 point de vie.



Vitalite permet de changer l'apparence et les points de vie de la vitalité du personnage.



Passetour permet de passer son tour et de réactualiser une grande partie des sprites.



Carte va créer une carte selon la liste défini.



Liste niveau tuto et backup pour recommencer ce niveau.



Liste niveau entrainement et backup pour recommencer ce niveau.



Liste niveau principale et backup pour recommencer ce niveau.



La troisème partie montrera la noeud principale du jeu, c'est la ou va s'emboiter toutes les fonctions. Elle est utilisé afin de faciliter le code et permet d'intégrer des événements au clavier.

En rouge, vérfie si le personnage a gagné ou perdu.



En orange, vérifie quel niveau est en train d'être joué et initialisation du niveau.



En vert, gère les déplacements à la pression d'une touche directionnel. En bleu, gère les fonctions passetour, doubledéplacement, liberation, reducrelance en pressant les touches correspondantes. En violet, gère les fonctions permettant de recommencer ou de revenir au niveau tuto en fonction du niveau ou se trouve le personnage en pressant les touches correspondantes



La quatrième et dernière partie montrera des screens du jeu en fonctionnement.

a completer



a completer



a completer



a completer



Le jeu est désormais fini vous pouvez télécharger le fichier sous forme Python (Pygame doit etre installé) ici ou sous forme exécutif (.exe) ici